package com.ep.general.kursant;

import java.util.Date;

import com.ep.general.instruktor.Instruktor;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;

public class Kursant {

	@Expose
	private int id;
	@Expose
	private String imie;
	@Expose
	private String nazwisko;
	@Expose
	private String login;
	private String haslo;
	@Expose
	private String imie2;
	@Expose
	private String email;
	@Expose
	private Date dataUrodzin;
	@Expose
	private String pesel;
	@Expose
	private String telefon;
	@Expose
	private boolean katA;
	@Expose
	private boolean katB;
	@Expose
	private String uwagi;
	@Expose
	private float godzWykladu;
	@Expose
	private float godzJazdy;
	@Expose
	private String displayName;

	private Instruktor instruktor;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getHaslo() {
		return haslo;
	}

	public void setHaslo(String haslo) {
		this.haslo = haslo;
	}

	public String getImie() {
		return imie;
	}

	public void setImie(String imie) {
		this.imie = imie;
	}

	public String getNazwisko() {
		return nazwisko;
	}

	public void setNazwisko(String nazwisko) {
		this.nazwisko = nazwisko;
	}

	public Instruktor getInstruktor() {
		return instruktor;
	}

	public void setInstruktor(Instruktor instruktor) {
		this.instruktor = instruktor;
	}

	public String getImie2() {
		return imie2;
	}

	public void setImie2(String imie2) {
		this.imie2 = imie2;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getDataUrodzin() {
		return dataUrodzin;
	}

	public void setDataUrodzin(Date dataUrodzin) {
		this.dataUrodzin = dataUrodzin;
	}

	public String getPesel() {
		return pesel;
	}

	public void setPesel(String pesel) {
		this.pesel = pesel;
	}

	public String getTelefon() {
		return telefon;
	}

	public void setTelefon(String telefon) {
		this.telefon = telefon;
	}

	public boolean isKatA() {
		return katA;
	}

	public void setKatA(boolean katA) {
		this.katA = katA;
	}

	public boolean isKatB() {
		return katB;
	}

	public void setKatB(boolean katB) {
		this.katB = katB;
	}

	public String getUwagi() {
		return uwagi;
	}

	public void setUwagi(String uwagi) {
		this.uwagi = uwagi;
	}

	public float getGodzWykladu() {
		return godzWykladu;
	}

	public void setGodzWykladu(float godzWykladu) {
		this.godzWykladu = godzWykladu;
	}

	public float getGodzJazdy() {
		return godzJazdy;
	}

	public void setGodzJazdy(float godzJazdy) {
		this.godzJazdy = godzJazdy;
	}

	public String getDisplayName() {
		return displayName;
	}

	public void setDisplayName(String displayName) {
		this.displayName = displayName;
	}

	public boolean compareAndCopy(Kursant item) {
		boolean copy = false;

		if (item == null) {
			return copy;
		}

		if (!this.imie.equals(item.getImie())) {
			this.imie = item.getImie();
			copy = true;
		}

		if (!this.nazwisko.equals(item.getNazwisko())) {
			this.nazwisko = item.getNazwisko();
			copy = true;
		}

		if (!this.login.equals(item.getLogin())) {
			this.login = item.getLogin();
			copy = true;
		}

		if (!this.haslo.equals(item.getHaslo())) {
			this.haslo = item.getHaslo();
			copy = true;
		}

		if (!this.imie2.equals(item.getImie2())) {
			this.imie2 = item.getImie2();
			copy = true;
		}

		if (!this.pesel.equals(item.getPesel())) {
			this.pesel = item.getPesel();
			copy = true;
		}

		if (!this.telefon.equals(item.getTelefon())) {
			this.telefon = item.getTelefon();
			copy = true;
		}

		if (!this.uwagi.equals(item.getUwagi())) {
			this.uwagi = item.getUwagi();
			copy = true;
		}

		if (this.katA != item.isKatA()) {
			this.katA = item.isKatA();
			copy = true;
		}

		if (this.katB != item.isKatB()) {
			this.katB = item.isKatB();
			copy = true;
		}

		if (this.dataUrodzin != item.getDataUrodzin()) {
			this.dataUrodzin = item.getDataUrodzin();
			copy = true;
		}
		if (this.uwagi != item.getUwagi()) {
			this.uwagi = item.getUwagi();
			copy = true;
		}

		if (this.godzJazdy != item.getGodzJazdy()) {
			this.godzJazdy = item.getGodzJazdy();
			copy = true;
		}

		if (this.godzWykladu != item.getGodzWykladu()) {
			this.godzWykladu = item.getGodzWykladu();
			copy = true;
		}

		if (this.email != item.getEmail()) {
			this.email = item.getEmail();
			copy = true;
		}

		return copy;
	}

	public String getAsJson() {
		setDisplayName(this.imie + " " + this.nazwisko + " / " + this.email);
		GsonBuilder gsonBuilder = new GsonBuilder();
		gsonBuilder.excludeFieldsWithoutExposeAnnotation()
				.setDateFormat("dd-MM-yyyy").create();
		Gson gson = gsonBuilder.create();

		return gson.toJson(this);
	}

}
